# 01. Angular의 소개와 특징
Assembled by GimunLee
# Angular 소개
Angular는 구글의 오픈소스 자바스크립트 프레임워크이다. Angular는 AngularJS와 다르다. Angular는 정적 타이핑과 ECMAScript 6 스펙을 충족시키기 위해 TypeScript로 재작성되었고 AngularJS와는 호환성이 없는 브레이킹 체인지를 다수 포함하고 있다.
# Angular의 장점
# 1. 컴포넌트 기반 개발(CBD, Component Based Development)
AngularJS는 Controller와 $scope가 개발의 중심이었지만, Angular에서는 컴포넌트가 개발의 중심이다. 이는 개발 생산성을 높이며 대규모 애플리케이션에 적합한 구조이다.
# 2. TypeScript의 도입
# 3. Angular CLI 도입으로 개발 도구의 통합 및 개발환경 구축 자동화
# 4. 성능의 향상
다이제스트 루프(digest loop)로 인한 성능 저하 문제의 해결
양방향 데이터 바인딩을 위해서는 와처가 추가되어야 하고 와처에 대해 다이제스트 루프가 실행되기 떄문에 와처가 늘수록 성능은 떨어지는데 Angular는 이를 개선했다.
AoT 컴파일
AoT(Ahead of Time) 컴파일은 사전 컴파일 방식을 의미한다. 구조 디렉티브(structural directive)를 브라우저가 실행 가능한 코드로 변환해야 하는데, 이러한 과정을 런타임에 실시하지 않고 사전에 컴파일하여 실행 속도를 향상시키는 기법이다. 또 다른 이점은 JIT(Just-In-Time) 컴파일러가 필요 없어서 프레임워크 크기가 획기적으로 작아진다.
지연 로딩
지연 로딩(lazy loading)은 SPA의 태생적 단점을 극복하기 위한 하나의 대안으로 애플리케이션 실행 시점에 애플리케이션에서 사용되는 모든 모듈을 한꺼번에 로딩하지 않고 필요한 시점에 필요한 모듈만을 로딩하는 방식이다.
코드 최적화